<?php
/**
 * SocialEngine
 *
 * @category   Application_Core
 * @package    Authorization
 * @copyright  Copyright 2006-2010 Webligo Developments
 * @license    http://www.socialengine.net/license/
 * @version    $Id: Create.php 7244 2010-09-01 01:49:53Z john $
 * @author     John
 */

/**
 * @category   Application_Core
 * @package    Authorization
 * @copyright  Copyright 2006-2010 Webligo Developments
 * @license    http://www.socialengine.net/license/
 */
class Authorization_Form_Admin_Level_Create extends Engine_Form {
	public function init() {
		// Set form attributes
		$this->setTitle ( 'Create Member Level' );
		$this->setDescription ( "AUTHORIZATION_FORM_ADMIN_LEVEL_EDIT_DESCRIPTION" );
		
		// Element: title
		$this->addElement ( 'Text', 'title', array ('label' => 'Member Level Name', 'allowEmpty' => false, 'required' => true ) );
		
		// Element: description
		$this->addElement ( 'Textarea', 'description', array ('label' => 'Description', 'allowEmpty' => true, 'required' => false ) );
		
		// Element: type
		$this->addElement ( 'Select', 'type', array ('label' => 'Type', 'description' => 'The type cannot be changed after creation.', 'multiOptions' => array ('admin' => 'Administrator', 'moderator' => 'Moderator', 'user' => 'Normal' ), 'value' => 'user' ) );
		$this->type->getDecorator ( 'Description' )->setOption ( 'placement', 'append' );
		
		// Element: parent
		$defaultLevelIdentity = null;
		$parentMultiOptions = array ();
		foreach ( Engine_Api::_ ()->getDbtable ( 'levels', 'authorization' )->fetchAll () as $level ) {
			if ($level->type == 'public') {
				continue;
			}
			$parentMultiOptions [$level->level_id] = $level->getTitle () . ' (' . $this->type->options [$level->type] . ')';
			if ($level->flag == 'default') {
				$defaultLevelIdentity = $level->level_id;
			}
		}
		$this->addElement ( 'Select', 'parent', array ('label' => 'Copy Values From:', 'description' => 'You must select a level that is the same type as selected above.', 'multiOptions' => $parentMultiOptions, 'value' => $defaultLevelIdentity ) );
		$this->parent->getDecorator ( 'Description' )->setOption ( 'placement', 'append' );
		
		// Buttons
		$this->addElement ( 'Button', 'submit', array ('label' => 'Create Level', 'type' => 'submit', 'ignore' => true, 'decorators' => array ('ViewHelper' ) ) );
		
		$this->addElement ( 'Cancel', 'cancel', array ('label' => 'cancel', 'link' => true, 'prependText' => ' or ', 'href' => 'admin/levels', 'decorators' => array ('ViewHelper' ) ) );
		$this->addDisplayGroup ( array ('submit', 'cancel' ), 'buttons' );
		$button_group = $this->getDisplayGroup ( 'buttons' );
	}
}